#Install packages
install.packages("haven")
trying URL 'https://cran.rstudio.com/bin/macosx/big-sur-arm64/contrib/4.3/haven_2.5.3.tgz'
Content type 'application/x-gzip' length 1132879 bytes (1.1 MB)
==================================================
downloaded 1.1 MB
The downloaded binary packages are in
/var/folders/8t/cf05ypcs56z1d0qh3cl43l880000gn/T//RtmpgK7aj1/downloaded_packages
#Load packages
library(data.table)
library(tidyr)
library(haven)
#Add data WV6
WV6_data <- load("/Users/laurabazzigher/Documents/GitHub/risk_wvs/data/dataset/WV6_dataset_wave_5_6/WV6_Data_R_v20201117.rdata")
WV6_data <- WV6_Data_R_v20201117
print(WV6_data)
#Name the variables
data6 = WV6_Data_R_v20201117[, c("V1", "V2", "V10", "V23", "V70", "V71","V72","V73", "V74B", "V75", "V76", "V77", "V78", "V79", "V147", "V149","V198", "V199", "V201", "V208","V209", "V210", "V240", "V242", "V248", "V229", "V57", "V58")]
names(data6) = c("v1_wave", "v2_country", "v10_happyness", "v23_satisfaction", "v70_creativity", "v71_money", "v72_security", "v73_goodtime", "v74b_help", "v75_success", "v76_risk", "v77_proper", "v78_environment", "v79_tradition", "v147_religion", "v149_hell", "v198_gov_benefits", "v199_fare_public_transportation", "v201_cheating_taxes", "v208_beating_wife", "v209_beating_children", "v210_violence", "v240_sex", "v242_age", "v248_education", "v229_employed", "v57_married", "v58_children")
#Exlusion of participants which no info about sex, age, education,
employment status, marital status, or number of children
data6 = subset(data6, v76_risk > 0 & v240_sex > 0 & v242_age >0 & v248_education > 0 & v229_employed > 0 & v57_married > 0 & v58_children >= 0)
#New column for variable “creativity”
# Erstellen einer neuen Zeile für die Variable
data6$creativity <- NA
# Zuordnen der Werte
data6$creativity[data6$v70_creativity == 1] <- "Very much like me"
data6$creativity[data6$v70_creativity == 2] <- "Like me"
data6$creativity[data6$v70_creativity == 3] <- "Somewhat like me"
data6$creativity[data6$v70_creativity == 4] <- "A little like me"
data6$creativity[data6$v70_creativity == 5] <- "Not like me"
data6$creativity[data6$v70_creativity == 6] <- "Not at all like me"
#New column for variable “security”
# Erstellen einer neuen Zeile für die Variable
data6$creativity <- NA
# Zuordnen der Werte
data6$security[data6$v72_security == 1] <- "Very much like me"
data6$security[data6$v72_security == 2] <- "Like me"
data6$security[data6$v72_security == 3] <- "Somewhat like me"
data6$security[data6$v72_security == 4] <- "A little like me"
data6$security[data6$v72_security == 5] <- "Not like me"
data6$security[data6$v72_security == 6] <- "Not at all like me"
#New column for variable “goodtime”
# Erstellen einer neuen Zeile für die Variable
data6$goodtime <- NA
# Zuordnen der Werte
data6$goodtime[data6$v73_goodtime == 1] <- "Very much like me"
data6$goodtime[data6$v73_goodtime == 2] <- "Like me"
data6$goodtime[data6$v73_goodtime == 3] <- "Somewhat like me"
data6$goodtime[data6$v73_goodtime == 4] <- "A little like me"
data6$goodtime[data6$v73_goodtime == 5] <- "Not like me"
data6$goodtime[data6$v73_goodtime == 6] <- "Not at all like me"
#New column for variable “money”
# Erstellen einer neuen Zeile für die Variable
data6$money <- NA
# Zuordnen der Werte
data6$money[data6$v70_creativity == 1] <- "Very much like me"
data6$money[data6$v70_creativity == 2] <- "Like me"
data6$money[data6$v70_creativity == 3] <- "Somewhat like me"
data6$money[data6$v70_creativity == 4] <- "A little like me"
data6$money[data6$v70_creativity == 5] <- "Not like me"
data6$money[data6$v70_creativity == 6] <- "Not at all like me"
#New column for variable “help”
# Erstellen einer neuen Zeile für die Variable
data6$help <- NA
# Zuordnen der Werte
data6$help[data6$v74b_help == 1] <- "Very much like me"
data6$help[data6$v74b_help == 2] <- "Like me"
data6$help[data6$v74b_help == 3] <- "Somewhat like me"
data6$help[data6$v74b_help == 4] <- "A little like me"
data6$help[data6$v74b_help == 5] <- "Not like me"
data6$help[data6$v74b_help == 6] <- "Not at all like me"
#New column for variable “success”
# Erstellen einer neuen Zeile für die Variable
data6$success <- NA
# Zuordnen der Werte
data6$success[data6$v75_success == 1] <- "Very much like me"
data6$success[data6$v75_success == 2] <- "Like me"
data6$success[data6$v75_success == 3] <- "Somewhat like me"
data6$success[data6$v75_success == 4] <- "A little like me"
data6$success[data6$v75_success == 5] <- "Not like me"
data6$success[data6$v75_success == 6] <- "Not at all like me"
#New column for variable “risk”
data6$risk <- NA
# Zuordnen der Werte
data6$risk[data6$v76_risk == 1] <- "Very much like me"
data6$risk[data6$v76_risk == 2] <- "Like me"
data6$risk[data6$v76_risk == 3] <- "Somewhat like me"
data6$risk[data6$v76_risk == 4] <- "A little like me"
data6$risk[data6$v76_risk == 5] <- "Not like me"
data6$risk[data6$v76_risk == 6] <- "Not at all like me"
#New column for variable “proper”
# Erstellen einer neuen Zeile für die Variable
data6$proper <- NA
# Zuordnen der Werte
data6$proper[data6$v77_proper == 1] <- "Very much like me"
data6$proper[data6$v77_proper == 2] <- "Like me"
data6$proper[data6$v77_proper == 3] <- "Somewhat like me"
data6$proper[data6$v77_proper == 4] <- "A little like me"
data6$proper[data6$v77_proper == 5] <- "Not like me"
data6$proper[data6$v77_proper == 6] <- "Not at all like me"
#New column for variable “environment”
# Erstellen einer neuen Zeile für die Variable
data6$environment <- NA
# Zuordnen der Werte
data6$environment[data6$v78_environment == 1] <- "Very much like me"
data6$environment[data6$v78_environment == 2] <- "Like me"
data6$environment[data6$v78_environment == 3] <- "Somewhat like me"
data6$environment[data6$v78_environment == 4] <- "A little like me"
data6$environment[data6$v78_environment == 5] <- "Not like me"
data6$environment[data6$v78_environment == 6] <- "Not at all like me"
#New column for variable “tradition”
# Erstellen einer neuen Zeile für die Variable
data6$tradition <- NA
# Zuordnen der Werte
data6$tradition[data6$v79_tradition == 1] <- "Very much like me"
data6$tradition[data6$v79_tradition == 2] <- "Like me"
data6$tradition[data6$v79_tradition == 3] <- "Somewhat like me"
data6$tradition[data6$v79_tradition == 4] <- "A little like me"
data6$tradition[data6$v79_tradition == 5] <- "Not like me"
data6$tradition[data6$v79_tradition == 6] <- "Not at all like me"
#New column for variable “satisfaction”
# Erstellen einer neuen Zeile für die Variable
data6$satisfaction <- NA
# Zuordnen der Werte
data6$satisfaction[data6$v57_married == 1] <- "Very happy"
data6$satisfaction[data6$v10_happyness == 2] <- "Rather happy"
data6$satisfaction[data6$v10_happyness == 3] <- "Not very happy"
data6$satisfaction[data6$v10_happyness == 4] <- "Not at all happy"
#New column for variable “marrital status”
# Erstellen einer neuen Zeile für die Variable "verheiratet"
data6$marital_status <- NA
# Zuordnen der Werte
data6$marital_status[data6$v57_married == 1] <- "Married"
data6$marital_status[data6$v57_married == 2] <- "Living together as married"
data6$marital_status[data6$v57_married == 3] <- "Divorced"
data6$marital_status[data6$v57_married == 4] <- "Separated"
data6$marital_status[data6$v57_married == 5] <- "Widowed"
data6$marital_status[data6$v57_married == 6] <- "Single"
#New column for variable “religion”
# Erstellen einer neuen Zeile für die Variable
data6$religion <- NA
# Zuordnen der Werte
data6$religion[data6$v147_religion == 1] <- "A religious person"
data6$religion[data6$v147_religion == 2] <- "Not a religious person"
data6$religion[data6$v147_religion == 3] <- "An atheist"
#Categorical age variable (for example, to plot response frequencies
by category)
data6$agecat <- NA # Create an empty column 'agecat'
data6$agecat[data6$v242_age < 20] = "15-19"
data6$agecat[data6$v242_age >= 20 & data6$v242_age < 30] = "20-29"
data6$agecat[data6$v242_age >= 30 & data6$v242_age < 40] = "30-39"
data6$agecat[data6$v242_age >= 40 & data6$v242_age < 50] = "40-49"
data6$agecat[data6$v242_age >= 50 & data6$v242_age < 60] = "50-59"
data6$agecat[data6$v242_age >= 60 & data6$v242_age < 70] = "60-69"
data6$agecat[data6$v242_age >= 70 & data6$v242_age < 80] = "70-79"
data6$agecat[data6$v242_age >= 80] = "80+"
#New column for variable “sex”
# Erstellen einer neuen Zeile für die Variable
data6$sex <- NA
# Zuordnen der Werte
data6$sex[data6$v240_sex == 1] <- "male"
data6$sex[data6$v240_sex == 2] <- "female"
#Number of countries
length(unique(data6$v2_country))
#Number of participants
nrow(data6)
#Range of age
range(data6$v242_age)
#Table about gender
table(data6$sex)
Scatterplot of Age vs. Risk with ggplot
data_df <- data.frame(Age = data6$v242_age, Risk = data6$v76_risk) # Convert data into a data frame.
ggplot(data_df, aes(x = Age, y = Risk)) +
geom_point(color = "blue", size = 1) +
labs(title = "Scatterplot of Age vs. Risk",
x = "Age",
y = "Risk")

Histogramm for Age
hist(data6$v242_age,
main="Häufigkeitsverteilung des Alters",
xlab="Alter",
ylab="Häufigkeit",
col="blue")

Overview of religion vs. Risk
cross_table <- table(data6$religion, data6$risk)
print(cross_table)
A little like me Like me Not at all like me Not like me Somewhat like me
A religious person 8338 8617 8905 12174 10144
An atheist 718 612 507 1031 689
Not a religious person 3790 2887 2851 4944 3678
Very much like me
A religious person 6643
An atheist 335
Not a religious person 1804
data_df <- data.frame(Religion = data6$religion, Risk = data6$risk)
# Säulendiagramm erstellen
ggplot(data_df, aes(x = Religion, fill = Risk)) +
geom_bar(position = "dodge") +
labs(title = "Distribution of Risk by Religion",
x = "Religion",
y = "Count")

#compare the groups religion and risk
# Summe of participants in each group
sum_religious <- sum(c(8338, 718, 3790))
sum_atheist <- sum(c(8617, 612, 2887))
sum_not_religious <- sum(c(8905, 507, 2851))
# normalising data
normalized_data <- data.frame(
Religion = c("A religious person", "An atheist", "Not a religious person"),
`A little like me` = c(8338/sum_religious, 718/sum_atheist, 3790/sum_not_religious),
`Like me` = c(8617/sum_religious, 612/sum_atheist, 2887/sum_not_religious),
`Not at all like me` = c(8905/sum_religious, 507/sum_atheist, 2851/sum_not_religious),
`Not like me` = c(12174/sum_religious, 1031/sum_atheist, 4944/sum_not_religious),
`Somewhat like me` = c(10144/sum_religious, 689/sum_atheist, 3678/sum_not_religious),
`Very much like me` = c(6643/sum_religious, 335/sum_atheist, 1804/sum_not_religious)
)
# Convert data to long format
normalized_data_long <- tidyr::gather(normalized_data, key = "Risk", value = "Percentage", -Religion)
# Create a bar chart
ggplot(normalized_data_long, aes(x = Religion, y = Percentage, fill = Risk)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Normalized Risk Distribution by Religion",
x = "Religion",
y = "Percentage")

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKI0luc3RhbGwgcGFja2FnZXMgCmBgYHtyfQppbnN0YWxsLnBhY2thZ2VzKCJoYXZlbiIpCmBgYAoKI0xvYWQgcGFja2FnZXMgCmBgYHtyfQpsaWJyYXJ5KGRhdGEudGFibGUpCmxpYnJhcnkodGlkeXIpCmxpYnJhcnkoaGF2ZW4pCmxpYnJhcnkoZ2dwbG90MikKYGBgCgoKI0FkZCBkYXRhIFdWNgpgYGB7cn0KV1Y2X2RhdGEgPC0gbG9hZCgiL1VzZXJzL2xhdXJhYmF6emlnaGVyL0RvY3VtZW50cy9HaXRIdWIvcmlza193dnMvZGF0YS9kYXRhc2V0L1dWNl9kYXRhc2V0X3dhdmVfNV82L1dWNl9EYXRhX1JfdjIwMjAxMTE3LnJkYXRhIikgCldWNl9kYXRhIDwtIFdWNl9EYXRhX1JfdjIwMjAxMTE3IApwcmludChXVjZfZGF0YSkKYGBgCiNOYW1lIHRoZSB2YXJpYWJsZXMgCmBgYHtyfQpkYXRhNiA9IFdWNl9EYXRhX1JfdjIwMjAxMTE3WywgYygiVjEiLCAiVjIiLCAiVjEwIiwgIlYyMyIsICJWNzAiLCAiVjcxIiwiVjcyIiwiVjczIiwgIlY3NEIiLCAiVjc1IiwgIlY3NiIsICJWNzciLCAiVjc4IiwgICJWNzkiLCAiVjE0NyIsICJWMTQ5IiwiVjE5OCIsICJWMTk5IiwgIlYyMDEiLCAiVjIwOCIsIlYyMDkiLCAiVjIxMCIsICJWMjQwIiwgIlYyNDIiLCAiVjI0OCIsICJWMjI5IiwgIlY1NyIsICJWNTgiKV0KCm5hbWVzKGRhdGE2KSA9IGMoInYxX3dhdmUiLCAidjJfY291bnRyeSIsICJ2MTBfaGFwcHluZXNzIiwgInYyM19zYXRpc2ZhY3Rpb24iLCAidjcwX2NyZWF0aXZpdHkiLCAidjcxX21vbmV5IiwgInY3Ml9zZWN1cml0eSIsICJ2NzNfZ29vZHRpbWUiLCAidjc0Yl9oZWxwIiwgInY3NV9zdWNjZXNzIiwgInY3Nl9yaXNrIiwgInY3N19wcm9wZXIiLCAidjc4X2Vudmlyb25tZW50IiwgInY3OV90cmFkaXRpb24iLCAKICAgICAgICAgICAgICAgICAidjE0N19yZWxpZ2lvbiIsICJ2MTQ5X2hlbGwiLCAidjE5OF9nb3ZfYmVuZWZpdHMiLCAidjE5OV9mYXJlX3B1YmxpY190cmFuc3BvcnRhdGlvbiIsICJ2MjAxX2NoZWF0aW5nX3RheGVzIiwgInYyMDhfYmVhdGluZ193aWZlIiwgInYyMDlfYmVhdGluZ19jaGlsZHJlbiIsICJ2MjEwX3Zpb2xlbmNlIiwgInYyNDBfc2V4IiwgInYyNDJfYWdlIiwgInYyNDhfZWR1Y2F0aW9uIiwgInYyMjlfZW1wbG95ZWQiLCAidjU3X21hcnJpZWQiLCAidjU4X2NoaWxkcmVuIikKYGBgCgoKI0V4bHVzaW9uIG9mIHBhcnRpY2lwYW50cyB3aGljaCBubyBpbmZvIGFib3V0IHNleCwgYWdlLCBlZHVjYXRpb24sIGVtcGxveW1lbnQgc3RhdHVzLCBtYXJpdGFsIHN0YXR1cywgb3IgbnVtYmVyIG9mIGNoaWxkcmVuCmBgYHtyfQpkYXRhNiA9IHN1YnNldChkYXRhNiwgdjc2X3Jpc2sgPiAwICYgdjI0MF9zZXggPiAwICYgdjI0Ml9hZ2UgPjAgJiB2MjQ4X2VkdWNhdGlvbiA+IDAgJiB2MjI5X2VtcGxveWVkID4gMCAmIHY1N19tYXJyaWVkID4gMCAmIHY1OF9jaGlsZHJlbiA+PSAwKQpgYGAKCgojTmV3IGNvbHVtbiBmb3IgdmFyaWFibGUgImNyZWF0aXZpdHkiCgpgYGB7cn0KIyBFcnN0ZWxsZW4gZWluZXIgbmV1ZW4gWmVpbGUgZsO8ciBkaWUgVmFyaWFibGUgCmRhdGE2JGNyZWF0aXZpdHkgPC0gTkEKCiMgWnVvcmRuZW4gZGVyIFdlcnRlCmRhdGE2JGNyZWF0aXZpdHlbZGF0YTYkdjcwX2NyZWF0aXZpdHkgPT0gMV0gPC0gIlZlcnkgbXVjaCBsaWtlIG1lIgpkYXRhNiRjcmVhdGl2aXR5W2RhdGE2JHY3MF9jcmVhdGl2aXR5ID09IDJdIDwtICJMaWtlIG1lIgpkYXRhNiRjcmVhdGl2aXR5W2RhdGE2JHY3MF9jcmVhdGl2aXR5ID09IDNdIDwtICJTb21ld2hhdCBsaWtlIG1lIgpkYXRhNiRjcmVhdGl2aXR5W2RhdGE2JHY3MF9jcmVhdGl2aXR5ID09IDRdIDwtICJBIGxpdHRsZSBsaWtlIG1lIgpkYXRhNiRjcmVhdGl2aXR5W2RhdGE2JHY3MF9jcmVhdGl2aXR5ID09IDVdIDwtICJOb3QgbGlrZSBtZSIKZGF0YTYkY3JlYXRpdml0eVtkYXRhNiR2NzBfY3JlYXRpdml0eSA9PSA2XSA8LSAiTm90IGF0IGFsbCBsaWtlIG1lIgpgYGAKCiNOZXcgY29sdW1uIGZvciB2YXJpYWJsZSAic2VjdXJpdHkiCgpgYGB7cn0KIyBFcnN0ZWxsZW4gZWluZXIgbmV1ZW4gWmVpbGUgZsO8ciBkaWUgVmFyaWFibGUgCmRhdGE2JGNyZWF0aXZpdHkgPC0gTkEKCiMgWnVvcmRuZW4gZGVyIFdlcnRlCmRhdGE2JHNlY3VyaXR5W2RhdGE2JHY3Ml9zZWN1cml0eSA9PSAxXSA8LSAiVmVyeSBtdWNoIGxpa2UgbWUiCmRhdGE2JHNlY3VyaXR5W2RhdGE2JHY3Ml9zZWN1cml0eSA9PSAyXSA8LSAiTGlrZSBtZSIKZGF0YTYkc2VjdXJpdHlbZGF0YTYkdjcyX3NlY3VyaXR5ID09IDNdIDwtICJTb21ld2hhdCBsaWtlIG1lIgpkYXRhNiRzZWN1cml0eVtkYXRhNiR2NzJfc2VjdXJpdHkgPT0gNF0gPC0gIkEgbGl0dGxlIGxpa2UgbWUiCmRhdGE2JHNlY3VyaXR5W2RhdGE2JHY3Ml9zZWN1cml0eSA9PSA1XSA8LSAiTm90IGxpa2UgbWUiCmRhdGE2JHNlY3VyaXR5W2RhdGE2JHY3Ml9zZWN1cml0eSA9PSA2XSA8LSAiTm90IGF0IGFsbCBsaWtlIG1lIgpgYGAKCiNOZXcgY29sdW1uIGZvciB2YXJpYWJsZSAiZ29vZHRpbWUiCgpgYGB7cn0KIyBFcnN0ZWxsZW4gZWluZXIgbmV1ZW4gWmVpbGUgZsO8ciBkaWUgVmFyaWFibGUgCmRhdGE2JGdvb2R0aW1lIDwtIE5BCgojIFp1b3JkbmVuIGRlciBXZXJ0ZQpkYXRhNiRnb29kdGltZVtkYXRhNiR2NzNfZ29vZHRpbWUgPT0gMV0gPC0gIlZlcnkgbXVjaCBsaWtlIG1lIgpkYXRhNiRnb29kdGltZVtkYXRhNiR2NzNfZ29vZHRpbWUgPT0gMl0gPC0gIkxpa2UgbWUiCmRhdGE2JGdvb2R0aW1lW2RhdGE2JHY3M19nb29kdGltZSA9PSAzXSA8LSAiU29tZXdoYXQgbGlrZSBtZSIKZGF0YTYkZ29vZHRpbWVbZGF0YTYkdjczX2dvb2R0aW1lID09IDRdIDwtICJBIGxpdHRsZSBsaWtlIG1lIgpkYXRhNiRnb29kdGltZVtkYXRhNiR2NzNfZ29vZHRpbWUgPT0gNV0gPC0gIk5vdCBsaWtlIG1lIgpkYXRhNiRnb29kdGltZVtkYXRhNiR2NzNfZ29vZHRpbWUgPT0gNl0gPC0gIk5vdCBhdCBhbGwgbGlrZSBtZSIKYGBgCgojTmV3IGNvbHVtbiBmb3IgdmFyaWFibGUgIm1vbmV5IgoKYGBge3J9CiMgRXJzdGVsbGVuIGVpbmVyIG5ldWVuIFplaWxlIGbDvHIgZGllIFZhcmlhYmxlIApkYXRhNiRtb25leSA8LSBOQQoKIyBadW9yZG5lbiBkZXIgV2VydGUKZGF0YTYkbW9uZXlbZGF0YTYkdjcwX2NyZWF0aXZpdHkgPT0gMV0gPC0gIlZlcnkgbXVjaCBsaWtlIG1lIgpkYXRhNiRtb25leVtkYXRhNiR2NzBfY3JlYXRpdml0eSA9PSAyXSA8LSAiTGlrZSBtZSIKZGF0YTYkbW9uZXlbZGF0YTYkdjcwX2NyZWF0aXZpdHkgPT0gM10gPC0gIlNvbWV3aGF0IGxpa2UgbWUiCmRhdGE2JG1vbmV5W2RhdGE2JHY3MF9jcmVhdGl2aXR5ID09IDRdIDwtICJBIGxpdHRsZSBsaWtlIG1lIgpkYXRhNiRtb25leVtkYXRhNiR2NzBfY3JlYXRpdml0eSA9PSA1XSA8LSAiTm90IGxpa2UgbWUiCmRhdGE2JG1vbmV5W2RhdGE2JHY3MF9jcmVhdGl2aXR5ID09IDZdIDwtICJOb3QgYXQgYWxsIGxpa2UgbWUiCmBgYAoKI05ldyBjb2x1bW4gZm9yIHZhcmlhYmxlICJoZWxwIgoKYGBge3J9CiMgRXJzdGVsbGVuIGVpbmVyIG5ldWVuIFplaWxlIGbDvHIgZGllIFZhcmlhYmxlIApkYXRhNiRoZWxwIDwtIE5BCgojIFp1b3JkbmVuIGRlciBXZXJ0ZQpkYXRhNiRoZWxwW2RhdGE2JHY3NGJfaGVscCA9PSAxXSA8LSAiVmVyeSBtdWNoIGxpa2UgbWUiCmRhdGE2JGhlbHBbZGF0YTYkdjc0Yl9oZWxwID09IDJdIDwtICJMaWtlIG1lIgpkYXRhNiRoZWxwW2RhdGE2JHY3NGJfaGVscCA9PSAzXSA8LSAiU29tZXdoYXQgbGlrZSBtZSIKZGF0YTYkaGVscFtkYXRhNiR2NzRiX2hlbHAgPT0gNF0gPC0gIkEgbGl0dGxlIGxpa2UgbWUiCmRhdGE2JGhlbHBbZGF0YTYkdjc0Yl9oZWxwID09IDVdIDwtICJOb3QgbGlrZSBtZSIKZGF0YTYkaGVscFtkYXRhNiR2NzRiX2hlbHAgPT0gNl0gPC0gIk5vdCBhdCBhbGwgbGlrZSBtZSIKYGBgCgojTmV3IGNvbHVtbiBmb3IgdmFyaWFibGUgInN1Y2Nlc3MiCgpgYGB7cn0KIyBFcnN0ZWxsZW4gZWluZXIgbmV1ZW4gWmVpbGUgZsO8ciBkaWUgVmFyaWFibGUgCmRhdGE2JHN1Y2Nlc3MgPC0gTkEKCiMgWnVvcmRuZW4gZGVyIFdlcnRlCmRhdGE2JHN1Y2Nlc3NbZGF0YTYkdjc1X3N1Y2Nlc3MgPT0gMV0gPC0gIlZlcnkgbXVjaCBsaWtlIG1lIgpkYXRhNiRzdWNjZXNzW2RhdGE2JHY3NV9zdWNjZXNzID09IDJdIDwtICJMaWtlIG1lIgpkYXRhNiRzdWNjZXNzW2RhdGE2JHY3NV9zdWNjZXNzID09IDNdIDwtICJTb21ld2hhdCBsaWtlIG1lIgpkYXRhNiRzdWNjZXNzW2RhdGE2JHY3NV9zdWNjZXNzID09IDRdIDwtICJBIGxpdHRsZSBsaWtlIG1lIgpkYXRhNiRzdWNjZXNzW2RhdGE2JHY3NV9zdWNjZXNzID09IDVdIDwtICJOb3QgbGlrZSBtZSIKZGF0YTYkc3VjY2Vzc1tkYXRhNiR2NzVfc3VjY2VzcyA9PSA2XSA8LSAiTm90IGF0IGFsbCBsaWtlIG1lIgpgYGAKCgojTmV3IGNvbHVtbiBmb3IgdmFyaWFibGUgInJpc2siCgpgYGB7cn0KZGF0YTYkcmlzayA8LSBOQQoKIyBadW9yZG5lbiBkZXIgV2VydGUKZGF0YTYkcmlza1tkYXRhNiR2NzZfcmlzayA9PSAxXSA8LSAiVmVyeSBtdWNoIGxpa2UgbWUiCmRhdGE2JHJpc2tbZGF0YTYkdjc2X3Jpc2sgPT0gMl0gPC0gIkxpa2UgbWUiCmRhdGE2JHJpc2tbZGF0YTYkdjc2X3Jpc2sgPT0gM10gPC0gIlNvbWV3aGF0IGxpa2UgbWUiCmRhdGE2JHJpc2tbZGF0YTYkdjc2X3Jpc2sgPT0gNF0gPC0gIkEgbGl0dGxlIGxpa2UgbWUiCmRhdGE2JHJpc2tbZGF0YTYkdjc2X3Jpc2sgPT0gNV0gPC0gIk5vdCBsaWtlIG1lIgpkYXRhNiRyaXNrW2RhdGE2JHY3Nl9yaXNrID09IDZdIDwtICJOb3QgYXQgYWxsIGxpa2UgbWUiCmBgYAoKI05ldyBjb2x1bW4gZm9yIHZhcmlhYmxlICJwcm9wZXIiCgpgYGB7cn0KIyBFcnN0ZWxsZW4gZWluZXIgbmV1ZW4gWmVpbGUgZsO8ciBkaWUgVmFyaWFibGUgCmRhdGE2JHByb3BlciA8LSBOQQoKIyBadW9yZG5lbiBkZXIgV2VydGUKZGF0YTYkcHJvcGVyW2RhdGE2JHY3N19wcm9wZXIgPT0gMV0gPC0gIlZlcnkgbXVjaCBsaWtlIG1lIgpkYXRhNiRwcm9wZXJbZGF0YTYkdjc3X3Byb3BlciA9PSAyXSA8LSAiTGlrZSBtZSIKZGF0YTYkcHJvcGVyW2RhdGE2JHY3N19wcm9wZXIgPT0gM10gPC0gIlNvbWV3aGF0IGxpa2UgbWUiCmRhdGE2JHByb3BlcltkYXRhNiR2NzdfcHJvcGVyID09IDRdIDwtICJBIGxpdHRsZSBsaWtlIG1lIgpkYXRhNiRwcm9wZXJbZGF0YTYkdjc3X3Byb3BlciA9PSA1XSA8LSAiTm90IGxpa2UgbWUiCmRhdGE2JHByb3BlcltkYXRhNiR2NzdfcHJvcGVyID09IDZdIDwtICJOb3QgYXQgYWxsIGxpa2UgbWUiCmBgYAoKI05ldyBjb2x1bW4gZm9yIHZhcmlhYmxlICJlbnZpcm9ubWVudCIKCmBgYHtyfQojIEVyc3RlbGxlbiBlaW5lciBuZXVlbiBaZWlsZSBmw7xyIGRpZSBWYXJpYWJsZSAKZGF0YTYkZW52aXJvbm1lbnQgPC0gTkEKCiMgWnVvcmRuZW4gZGVyIFdlcnRlCmRhdGE2JGVudmlyb25tZW50W2RhdGE2JHY3OF9lbnZpcm9ubWVudCA9PSAxXSA8LSAiVmVyeSBtdWNoIGxpa2UgbWUiCmRhdGE2JGVudmlyb25tZW50W2RhdGE2JHY3OF9lbnZpcm9ubWVudCA9PSAyXSA8LSAiTGlrZSBtZSIKZGF0YTYkZW52aXJvbm1lbnRbZGF0YTYkdjc4X2Vudmlyb25tZW50ID09IDNdIDwtICJTb21ld2hhdCBsaWtlIG1lIgpkYXRhNiRlbnZpcm9ubWVudFtkYXRhNiR2NzhfZW52aXJvbm1lbnQgPT0gNF0gPC0gIkEgbGl0dGxlIGxpa2UgbWUiCmRhdGE2JGVudmlyb25tZW50W2RhdGE2JHY3OF9lbnZpcm9ubWVudCA9PSA1XSA8LSAiTm90IGxpa2UgbWUiCmRhdGE2JGVudmlyb25tZW50W2RhdGE2JHY3OF9lbnZpcm9ubWVudCA9PSA2XSA8LSAiTm90IGF0IGFsbCBsaWtlIG1lIgpgYGAKCgojTmV3IGNvbHVtbiBmb3IgdmFyaWFibGUgInRyYWRpdGlvbiIKCmBgYHtyfQojIEVyc3RlbGxlbiBlaW5lciBuZXVlbiBaZWlsZSBmw7xyIGRpZSBWYXJpYWJsZSAKZGF0YTYkdHJhZGl0aW9uIDwtIE5BCgojIFp1b3JkbmVuIGRlciBXZXJ0ZQpkYXRhNiR0cmFkaXRpb25bZGF0YTYkdjc5X3RyYWRpdGlvbiA9PSAxXSA8LSAiVmVyeSBtdWNoIGxpa2UgbWUiCmRhdGE2JHRyYWRpdGlvbltkYXRhNiR2NzlfdHJhZGl0aW9uID09IDJdIDwtICJMaWtlIG1lIgpkYXRhNiR0cmFkaXRpb25bZGF0YTYkdjc5X3RyYWRpdGlvbiA9PSAzXSA8LSAiU29tZXdoYXQgbGlrZSBtZSIKZGF0YTYkdHJhZGl0aW9uW2RhdGE2JHY3OV90cmFkaXRpb24gPT0gNF0gPC0gIkEgbGl0dGxlIGxpa2UgbWUiCmRhdGE2JHRyYWRpdGlvbltkYXRhNiR2NzlfdHJhZGl0aW9uID09IDVdIDwtICJOb3QgbGlrZSBtZSIKZGF0YTYkdHJhZGl0aW9uW2RhdGE2JHY3OV90cmFkaXRpb24gPT0gNl0gPC0gIk5vdCBhdCBhbGwgbGlrZSBtZSIKYGBgCgojTmV3IGNvbHVtbiBmb3IgdmFyaWFibGUgInNhdGlzZmFjdGlvbiIKCmBgYHtyfQojIEVyc3RlbGxlbiBlaW5lciBuZXVlbiBaZWlsZSBmw7xyIGRpZSBWYXJpYWJsZSAKZGF0YTYkc2F0aXNmYWN0aW9uIDwtIE5BCgojIFp1b3JkbmVuIGRlciBXZXJ0ZQpkYXRhNiRzYXRpc2ZhY3Rpb25bZGF0YTYkdjU3X21hcnJpZWQgPT0gMV0gPC0gIlZlcnkgaGFwcHkiCmRhdGE2JHNhdGlzZmFjdGlvbltkYXRhNiR2MTBfaGFwcHluZXNzID09IDJdIDwtICJSYXRoZXIgaGFwcHkiCmRhdGE2JHNhdGlzZmFjdGlvbltkYXRhNiR2MTBfaGFwcHluZXNzID09IDNdIDwtICJOb3QgdmVyeSBoYXBweSIKZGF0YTYkc2F0aXNmYWN0aW9uW2RhdGE2JHYxMF9oYXBweW5lc3MgPT0gNF0gPC0gIk5vdCBhdCBhbGwgaGFwcHkiCmBgYAoKI05ldyBjb2x1bW4gZm9yIHZhcmlhYmxlICJtYXJyaXRhbCBzdGF0dXMiCgpgYGB7cn0KIyBFcnN0ZWxsZW4gZWluZXIgbmV1ZW4gWmVpbGUgZsO8ciBkaWUgVmFyaWFibGUgCmRhdGE2JG1hcml0YWxfc3RhdHVzIDwtIE5BCgojIFp1b3JkbmVuIGRlciBXZXJ0ZQpkYXRhNiRtYXJpdGFsX3N0YXR1c1tkYXRhNiR2NTdfbWFycmllZCA9PSAxXSA8LSAiTWFycmllZCIKZGF0YTYkbWFyaXRhbF9zdGF0dXNbZGF0YTYkdjU3X21hcnJpZWQgPT0gMl0gPC0gIkxpdmluZyB0b2dldGhlciBhcyBtYXJyaWVkIgpkYXRhNiRtYXJpdGFsX3N0YXR1c1tkYXRhNiR2NTdfbWFycmllZCA9PSAzXSA8LSAiRGl2b3JjZWQiCmRhdGE2JG1hcml0YWxfc3RhdHVzW2RhdGE2JHY1N19tYXJyaWVkID09IDRdIDwtICJTZXBhcmF0ZWQiCmRhdGE2JG1hcml0YWxfc3RhdHVzW2RhdGE2JHY1N19tYXJyaWVkID09IDVdIDwtICJXaWRvd2VkIgpkYXRhNiRtYXJpdGFsX3N0YXR1c1tkYXRhNiR2NTdfbWFycmllZCA9PSA2XSA8LSAiU2luZ2xlIgpgYGAKCiNOZXcgY29sdW1uIGZvciB2YXJpYWJsZSAicmVsaWdpb24iCgpgYGB7cn0KIyBFcnN0ZWxsZW4gZWluZXIgbmV1ZW4gWmVpbGUgZsO8ciBkaWUgVmFyaWFibGUgCmRhdGE2JHJlbGlnaW9uIDwtIE5BCgojIFp1b3JkbmVuIGRlciBXZXJ0ZQpkYXRhNiRyZWxpZ2lvbltkYXRhNiR2MTQ3X3JlbGlnaW9uID09IDFdIDwtICJBIHJlbGlnaW91cyBwZXJzb24iCmRhdGE2JHJlbGlnaW9uW2RhdGE2JHYxNDdfcmVsaWdpb24gPT0gMl0gPC0gIk5vdCBhIHJlbGlnaW91cyBwZXJzb24iCmRhdGE2JHJlbGlnaW9uW2RhdGE2JHYxNDdfcmVsaWdpb24gPT0gM10gPC0gIkFuIGF0aGVpc3QiCmBgYAoKCiNDYXRlZ29yaWNhbCBhZ2UgdmFyaWFibGUgKGZvciBleGFtcGxlLCB0byBwbG90IHJlc3BvbnNlIGZyZXF1ZW5jaWVzIGJ5IGNhdGVnb3J5KQpgYGB7cn0KZGF0YTYkYWdlY2F0IDwtIE5BICAjIENyZWF0ZSBhbiBlbXB0eSBjb2x1bW4gJ2FnZWNhdCcKCmRhdGE2JGFnZWNhdFtkYXRhNiR2MjQyX2FnZSA8IDIwXSA9ICIxNS0xOSIKZGF0YTYkYWdlY2F0W2RhdGE2JHYyNDJfYWdlID49IDIwICYgZGF0YTYkdjI0Ml9hZ2UgPCAzMF0gPSAiMjAtMjkiCmRhdGE2JGFnZWNhdFtkYXRhNiR2MjQyX2FnZSA+PSAzMCAmIGRhdGE2JHYyNDJfYWdlIDwgNDBdID0gIjMwLTM5IgpkYXRhNiRhZ2VjYXRbZGF0YTYkdjI0Ml9hZ2UgPj0gNDAgJiBkYXRhNiR2MjQyX2FnZSA8IDUwXSA9ICI0MC00OSIKZGF0YTYkYWdlY2F0W2RhdGE2JHYyNDJfYWdlID49IDUwICYgZGF0YTYkdjI0Ml9hZ2UgPCA2MF0gPSAiNTAtNTkiCmRhdGE2JGFnZWNhdFtkYXRhNiR2MjQyX2FnZSA+PSA2MCAmIGRhdGE2JHYyNDJfYWdlIDwgNzBdID0gIjYwLTY5IgpkYXRhNiRhZ2VjYXRbZGF0YTYkdjI0Ml9hZ2UgPj0gNzAgJiBkYXRhNiR2MjQyX2FnZSA8IDgwXSA9ICI3MC03OSIKZGF0YTYkYWdlY2F0W2RhdGE2JHYyNDJfYWdlID49IDgwXSA9ICI4MCsiCmBgYAoKI05ldyBjb2x1bW4gZm9yIHZhcmlhYmxlICJzZXgiCgpgYGB7cn0KIyBFcnN0ZWxsZW4gZWluZXIgbmV1ZW4gWmVpbGUgZsO8ciBkaWUgVmFyaWFibGUgCmRhdGE2JHNleCA8LSBOQSAjIENyZWF0ZSBhbiBlbXB0eSBjb2x1bW4gJ3NleCcKCmRhdGE2JHNleFtkYXRhNiR2MjQwX3NleCA9PSAxXSA8LSAibWFsZSIKZGF0YTYkc2V4W2RhdGE2JHYyNDBfc2V4ID09IDJdIDwtICJmZW1hbGUiCmBgYAoKI051bWJlciBvZiBjb3VudHJpZXMKYGBge3J9Cmxlbmd0aCh1bmlxdWUoZGF0YTYkdjJfY291bnRyeSkpIApgYGAKCiNOdW1iZXIgb2YgcGFydGljaXBhbnRzCmBgYHtyfQpucm93KGRhdGE2KSAKYGBgCgojUmFuZ2Ugb2YgYWdlCmBgYHtyfQpyYW5nZShkYXRhNiR2MjQyX2FnZSkgCmBgYAoKI1RhYmxlIGFib3V0IGdlbmRlcgpgYGB7cn0KdGFibGUoZGF0YTYkc2V4KQpgYGAKCiMgU2NhdHRlcnBsb3Qgb2YgQWdlIHZzLiBSaXNrIHdpdGggZ2dwbG90CmBgYHtyfQpkYXRhX2RmIDwtIGRhdGEuZnJhbWUoQWdlID0gZGF0YTYkdjI0Ml9hZ2UsIFJpc2sgPSBkYXRhNiR2NzZfcmlzaykgIyBDb252ZXJ0IGRhdGEgaW50byBhIGRhdGEgZnJhbWUuCgpnZ3Bsb3QoZGF0YV9kZiwgYWVzKHggPSBBZ2UsIHkgPSBSaXNrKSkgKwogIGdlb21fcG9pbnQoY29sb3IgPSAiYmx1ZSIsIHNpemUgPSAxKSArCiAgbGFicyh0aXRsZSA9ICJTY2F0dGVycGxvdCBvZiBBZ2UgdnMuIFJpc2siLAogICAgICAgeCA9ICJBZ2UiLAogICAgICAgeSA9ICJSaXNrIikKYGBgCgojIEhpc3RvZ3JhbW0gZm9yIEFnZQpgYGB7cn0KaGlzdChkYXRhNiR2MjQyX2FnZSwgCiAgICAgbWFpbj0iSMOkdWZpZ2tlaXRzdmVydGVpbHVuZyBkZXMgQWx0ZXJzIiwKICAgICB4bGFiPSJBbHRlciIsCiAgICAgeWxhYj0iSMOkdWZpZ2tlaXQiLAogICAgIGNvbD0iYmx1ZSIpCmBgYAoKCiMgT3ZlcnZpZXcgb2YgcmVsaWdpb24gdnMuIFJpc2sKYGBge3J9CmNyb3NzX3RhYmxlIDwtIHRhYmxlKGRhdGE2JHJlbGlnaW9uLCBkYXRhNiRyaXNrKQpwcmludChjcm9zc190YWJsZSkKYGBgCgpgYGB7cn0KZGF0YV9kZiA8LSBkYXRhLmZyYW1lKFJlbGlnaW9uID0gZGF0YTYkcmVsaWdpb24sIFJpc2sgPSBkYXRhNiRyaXNrKQoKIyBTw6R1bGVuZGlhZ3JhbW0gZXJzdGVsbGVuCmdncGxvdChkYXRhX2RmLCBhZXMoeCA9IFJlbGlnaW9uLCBmaWxsID0gUmlzaykpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJkb2RnZSIpICsKICBsYWJzKHRpdGxlID0gIkRpc3RyaWJ1dGlvbiBvZiBSaXNrIGJ5IFJlbGlnaW9uIiwKICAgICAgIHggPSAiUmVsaWdpb24iLAogICAgICAgeSA9ICJDb3VudCIpCmBgYAoKI2NvbXBhcmUgdGhlIGdyb3VwcyByZWxpZ2lvbiBhbmQgcmlzawpgYGB7cn0KIyBTdW1tZSBvZiBwYXJ0aWNpcGFudHMgaW4gZWFjaCBncm91cApzdW1fcmVsaWdpb3VzIDwtIHN1bShjKDgzMzgsIDcxOCwgMzc5MCkpCnN1bV9hdGhlaXN0IDwtIHN1bShjKDg2MTcsIDYxMiwgMjg4NykpCnN1bV9ub3RfcmVsaWdpb3VzIDwtIHN1bShjKDg5MDUsIDUwNywgMjg1MSkpCgojIG5vcm1hbGlzaW5nIGRhdGEKbm9ybWFsaXplZF9kYXRhIDwtIGRhdGEuZnJhbWUoCiAgUmVsaWdpb24gPSBjKCJBIHJlbGlnaW91cyBwZXJzb24iLCAiQW4gYXRoZWlzdCIsICJOb3QgYSByZWxpZ2lvdXMgcGVyc29uIiksCiAgYEEgbGl0dGxlIGxpa2UgbWVgID0gYyg4MzM4L3N1bV9yZWxpZ2lvdXMsIDcxOC9zdW1fYXRoZWlzdCwgMzc5MC9zdW1fbm90X3JlbGlnaW91cyksCiAgYExpa2UgbWVgID0gYyg4NjE3L3N1bV9yZWxpZ2lvdXMsIDYxMi9zdW1fYXRoZWlzdCwgMjg4Ny9zdW1fbm90X3JlbGlnaW91cyksCiAgYE5vdCBhdCBhbGwgbGlrZSBtZWAgPSBjKDg5MDUvc3VtX3JlbGlnaW91cywgNTA3L3N1bV9hdGhlaXN0LCAyODUxL3N1bV9ub3RfcmVsaWdpb3VzKSwKICBgTm90IGxpa2UgbWVgID0gYygxMjE3NC9zdW1fcmVsaWdpb3VzLCAxMDMxL3N1bV9hdGhlaXN0LCA0OTQ0L3N1bV9ub3RfcmVsaWdpb3VzKSwKICBgU29tZXdoYXQgbGlrZSBtZWAgPSBjKDEwMTQ0L3N1bV9yZWxpZ2lvdXMsIDY4OS9zdW1fYXRoZWlzdCwgMzY3OC9zdW1fbm90X3JlbGlnaW91cyksCiAgYFZlcnkgbXVjaCBsaWtlIG1lYCA9IGMoNjY0My9zdW1fcmVsaWdpb3VzLCAzMzUvc3VtX2F0aGVpc3QsIDE4MDQvc3VtX25vdF9yZWxpZ2lvdXMpCikKCiMgQ29udmVydCBkYXRhIHRvIGxvbmcgZm9ybWF0Cm5vcm1hbGl6ZWRfZGF0YV9sb25nIDwtIHRpZHlyOjpnYXRoZXIobm9ybWFsaXplZF9kYXRhLCBrZXkgPSAiUmlzayIsIHZhbHVlID0gIlBlcmNlbnRhZ2UiLCAtUmVsaWdpb24pCgojIENyZWF0ZSBhIGJhciBjaGFydApnZ3Bsb3Qobm9ybWFsaXplZF9kYXRhX2xvbmcsIGFlcyh4ID0gUmVsaWdpb24sIHkgPSBQZXJjZW50YWdlLCBmaWxsID0gUmlzaykpICsKICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IiwgcG9zaXRpb24gPSAiZG9kZ2UiKSArCiAgbGFicyh0aXRsZSA9ICJOb3JtYWxpemVkIFJpc2sgRGlzdHJpYnV0aW9uIGJ5IFJlbGlnaW9uIiwKICAgICAgIHggPSAiUmVsaWdpb24iLAogICAgICAgeSA9ICJQZXJjZW50YWdlIikKCmBgYAoKCgoKCgoKCgo=